

import java.io.*;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import webpage.CreateDBConnection;

/**
 * Servlet implementation class Upload
 */

public class Upload extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	ArrayList<String>details = new ArrayList<String>();
    public Upload() {
        super();
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String loginEmail = (String)request.getSession().getAttribute("loginEmail");
		String saveFile = "";
	      String contentType = request.getContentType();
	      if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) {
	            DataInputStream in = new DataInputStream(request.getInputStream());
	            int formDataLength = request.getContentLength();
	            byte dataBytes[] = new byte[formDataLength];
	            int byteRead = 0;
	            int totalBytesRead = 0;
	            while (totalBytesRead < formDataLength) {
	                  byteRead = in.read(dataBytes, totalBytesRead, formDataLength);
	                  totalBytesRead += byteRead;
	            }
	            String file = new String(dataBytes);
	            saveFile = file.substring(file.indexOf("filename=\"") + 10);
	            saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
	            saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1, saveFile.indexOf("\""));
	            int lastIndex = contentType.lastIndexOf("=");
	            String boundary = contentType.substring(lastIndex + 1, contentType.length());
	            int pos;
	            pos = file.indexOf("filename=\"");
	            pos = file.indexOf("\n", pos) + 1;
	            pos = file.indexOf("\n", pos) + 1;
	            pos = file.indexOf("\n", pos) + 1;
	            int boundaryLocation = file.indexOf(boundary, pos) - 4;
	            int startPos = ((file.substring(0, pos)).getBytes()).length;
	            int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
	            saveFile = "C:/SVN/WebContent/upload/" + saveFile;
	            File ff = new File(saveFile);
	            FileOutputStream fileOut = new FileOutputStream(ff);
	            fileOut.write(dataBytes, startPos, (endPos - startPos));
	            fileOut.flush();
	            fileOut.close();
	            CreateDBConnection create = new CreateDBConnection();
	            String path = saveFile.substring(saveFile.lastIndexOf("C:/SVN/WebContent/") + 18);
	            String columnName = "profile_pic";
	            String result = create.updateColumn(columnName, path, loginEmail);
	            if (result.equals("Success")){
	            	CreateDBConnection getDetailsAgain = new CreateDBConnection();
	            	details = getDetailsAgain.getDetails(loginEmail);
	            	HttpSession session = request.getSession(true);
	            	session.setAttribute("details", details);
	    			session.setAttribute("loginEmail", loginEmail);
	            	request.getRequestDispatcher("Profile.jsp").forward(request, response);
	    		} else {
	    			request.getRequestDispatcher("retry.jsp")
	    					.forward(request, response);
	            }
	      }
	}

}
